HAL LTDC IRQ handler and callbacks functions migration

This section provides information about the HAL LTDC callbacks register/unregister functions migration.

HAL LTDC error callback

HAL1

HAL2

HAL_LTDC_ErrorCallback(LTDC_HandleTypeDef *hltdc);
HAL_LTDC_ErrorCallback(hal_ltdc_handle_t *hltdc);

HAL LTDC line event callback

HAL1

HAL2

HAL_LTDC_LineEventCallback(LTDC_HandleTypeDef *hltdc);
HAL_LTDC_LineDetectionCallback(hal_ltdc_handle_t *hltdc);

HAL LTDC reload event callback

HAL1

HAL2

HAL_LTDC_ReloadEventCallback(LTDC_HandleTypeDef *hltdc);
HAL_LTDC_ReloadEventCallback(hal_ltdc_handle_t *hltdc);

HAL LTDC register callback functions

In HAL1, the function HAL_LTDC_RegisterCallback is used to register various LTDC callbacks through a single function with a specific callback ID. In HAL2, distinct functions are available to register each specific LTDC callback, providing more granularity and control over the callback registration process.

HAL1

HAL2

LTDC ERROR callback

HAL_LTDC_RegisterCallback(&hltdc, HAL_LTDC_ERROR_CB_ID, USER_LTDC_ErrorCallback);
HAL_LTDC_RegisterErrorCallback(&hltdc, USER_LTDC_ErrorCallback);

LTDC Line Detection callback

HAL_LTDC_RegisterCallback(&hltdc, HAL_LTDC_LINE_EVENT_CB_ID, USER_LTDC_LineEventCallback);
HAL_LTDC_RegisterLineDetectionCallback(&hltdc, USER_LTDC_LineEventCallback);

LTDC Reload Event callback

HAL_LTDC_RegisterCallback(&hltdc, HAL_LTDC_RELOAD_EVENT_CB_ID, USER_LTDC_ReloadEventCallback);
HAL_LTDC_RegisterReloadEventCallback(&hltdc, USER_LTDC_ReloadEventCallback);

Related concept: Individual callback registration APIs replace global register and unregister functions


HAL LTDC unregisters callback functions

In HAL1, the functions HAL_LTDC_UnRegisterCallback is used to unregister various LTDC callbacks through a single function with a specific callback ID. In HAL2, the unregister callback API has been removed. Instead, callbacks can be managed by re-registering the default HAL LTDC weak callbacks as needed.

HAL1

HAL2

LTDC ERROR callback

HAL_LTDC_UnRegisterCallback(&hltdc, HAL_LTDC_ERROR_CB_ID);
HAL_LTDC_RegisterErrorCallback(&hltdc, HAL_LTDC_ErrorCallback);

LTDC Line Detection callback

HAL_LTDC_UnRegisterCallback(&hltdc, HAL_LTDC_LINE_EVENT_CB_ID);
HAL_LTDC_RegisterLineDetectionCallback(&hltdc, HAL_LTDC_LineDetectionCallback);

LTDC Reload Event callback

HAL_LTDC_UnRegisterCallback(&hltdc, HAL_LTDC_RELOAD_EVENT_CB_ID);
HAL_LTDC_RegisterReloadEventCallback(&hltdc, HAL_LTDC_ReloadEventCallback);

Related concept: Individual callback registration APIs replace global register and unregister functions


HAL LTDC IRQHandler function

HAL1

HAL2

HAL_LTDC_IRQHandler(LTDC_HandleTypeDef *hltdc);
HAL_LTDC_IRQHandler(hal_ltdc_handle_t *hltdc);

Note

In HAL1, all LTDC interrupts were managed by a single global function HAL_LTDC_IRQHandler(LTDC_HandleTypeDef *hltdc).

In HAL2, this global handler is retained specifically for managing line and register reload interrupts. Additionally, dedicated IRQ handlers have been introduced to handle distinct interrupts:

  • HAL_LTDC_ERR_IRQHandler(hal_ltdc_handle_t *hltdc): handles transfer error and FIFO underrun interrupts.

  • HAL_LTDC_LineDetectionIRQHandler(hal_ltdc_handle_t *hltdc): handles line detection interrupts.

  • HAL_LTDC_ReloadEventIRQHandler(hal_ltdc_handle_t *hltdc): handles register reload interrupts.

Related concept: Introduce specialized IRQ handlers